package com.tiantian.judge.service;


import com.tiantian.judge.domain.bo.JudgeScoreBo;
import com.tiantian.judge.domain.dto.QueryReplySubDto;
import com.tiantian.judge.domain.vo.JudgeDetailVo;
import com.tiantian.judge.domain.vo.JudgeVo;
import com.tiantian.judge.domain.vo.SubmitInfoVo;

import java.util.List;
import java.util.Map;

/**
 * @author TianTian
 */
public interface JudgeService {

    /**
     * 获取判题列表
     */
    List<JudgeVo> getJudgeList(JudgeVo judgeVO);

    /**
     * 根据用户ID查询判题信息
     */
    JudgeVo getJudgeInfoByUserId(Long userId);

    /**
     * 根据用户ID查询判断详细信息列表
     */
    List<JudgeDetailVo> getJudgeDetailListByUserId(Long userId);

    /**
     * 根据replyId批量更新分数
     */
    int updateScoreByReplyId(List<JudgeScoreBo> sysJudgeScoreList);

    /**
     * 获取提交的信息
     */
    List<SubmitInfoVo> getSubInfo(QueryReplySubDto queryReplySubDTO);

    /**
     * 获取提交的总信息
     */
    Map<String, Object> getTotalInfoSubmitted();

    /**
     * 手动评分
     */
    Map<String, Object> ManualScoring(List<JudgeScoreBo> sysJudgeScoreList);

    /**
     * AI判题
     */
    void aiJudge(Long userId);
}
